/**
 * ---- Classe Ek----
 *  * Troisième famille Ek : <BR>
 *      On définit E0 comme étant vide, En est formé de 5 segments. <BR>
 *      Les 5 segments ont une extrémité commune, deux segments "consécutifs" forment un angle de 72°. <BR>
 *      La deuxième extrémité de chacun des segments est le centre d'une copie de En-1. <BR><BR>
 *      
 *      Remarque : la longueur des segments doit dépendre de n.
 *        
 * @author Alexandre Boursier, Nolan Potier <BR>
 * @version 20/12/2011
 *
 */

package exercice_3;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public abstract class Ek extends Frame {
    
    private static final long serialVersionUID = 1L;
    static final int WIDTH = 700;       
    static final int HEIGHT = 600;
    protected int profondeur;

    /**
     * Constructeur normal
     *
     * @param prof 
     *          le nombre d'itérations
     */
    public Ek(int prof) {
        this.setSize(WIDTH, HEIGHT);
        this.setVisible(true);
        this.setBackground (Color.white);
        this.profondeur=prof;
        addWindowListener(new WindowHandler()); 
        setTitle("Exercice 3 - Famille Ck");
        repaint();
    }

    private class WindowHandler extends WindowAdapter {
        public void windowClosing(WindowEvent e) {System.exit(0);}
    }

    public void paint(Graphics g)
    {      
        int height = getSize().height; 
        int width = getSize().width;   
        int x = width/2; 
        int y = height/2;    
        g.setColor(Color.black);  
     
        drawEk(x, y, width/4, 5, 0, profondeur, g);
    }


    /**
     * Méthode récursive pour dessiner les éléments de la classe Ek selon une profondeur k donnée <BR>
     * 
     * @param x                 
     *          Abscisse du centre de l'étoile cible
     * @param y                 
     *          Ordonnée du centre de l'étoile cible
     * @param longueur
     *          Longueur des segments à dessiner.
     * @param arc
     *          Nombre d'arcs à dessiner
     * @param angle
     *          Ecart entre chaque arc
     * @param k                 
     *          Profondeur de la récursion.
     * @param drawingArea       
     *          Outil nécessaire au dessin.
     * 
     */
    public abstract  void drawEk(double x, double y, int longueur, int nbarc, int angle, int k, Graphics drawingArea) ;

}
